package com.un.ebs.core.enums;

import com.baomidou.mybatisplus.annotation.EnumValue;
import lombok.Getter;

@Getter
public enum UserTypeEnum implements IEnum {

    /**
     * 平台的最高用户，负责管理应用开发者
     */
    ROOT(0, "平台管理员"),

    /**
     * 应用开发者，可对所属应用进行全生命周期的管理
     */
    DEVELOPER(1, "应用开发者"),

    /**
     * 租户管理员
     */
    TENANT_ADMIN(3, "租户管理员"),

    /**
     * 一般用户，一般是应用中的用户
     */
    USER(2, "一般用户"),

    /**
     * 外部Api接口访问
     */
    API_REQUEST(8, "系统间Api调用"),

    /**
     * 虚拟用户
     * <p>
     * 例如在微信场景下将客户虚拟成一个用户，由客户（虚拟用户）进行相应的操作。
     * 此类场景下，微信用户（客户）首次进入应用时，将自动创建一个虚拟用户，并
     * 以此用户身份进行相应操作。
     */
    OTHER(9, "其它");

    UserTypeEnum(Integer code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    @EnumValue
    private final int code;

    private final String desc;

    public static UserTypeEnum valueOf(int code) {
        switch (code) {
            case 0:
                return UserTypeEnum.ROOT;
            case 1:
                return UserTypeEnum.DEVELOPER;
            case 2:
                return UserTypeEnum.USER;
            default:
                return UserTypeEnum.OTHER;
        }
    }
}
